# coding=utf-8

# from index import insertData
import index

from selenium import webdriver  # 从selenium导入webdriver
from selenium.webdriver.common.by import By

from lxml import etree
import requests
import re
import random
import uuid
import result


def getNovel(link, bookName, bookId, chapterName, platform):
    """
    获取书相关的属性 包含  书ID、书名、章节ID、章节名称
    """

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
    co = webdriver.ChromeOptions()
    co.add_argument('--user-agent={}'.format(user_agent))

    co.add_argument('--no-sandbox')#解决DevToolsActivePort文件不存在的报错
    co.add_argument('window-size=2560x1440') #指定浏览器分辨率
    co.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
    co.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
    co.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
    co.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

    driver = webdriver.Chrome(
        chrome_options=co
    )

    try:
        driver.get(link)


        btn = driver.find_element_by_xpath('//*[@id="j_closeGuide"]')

        if btn:
            btn.click()

        book_id = driver.find_element_by_xpath(
            '//*[@id="bookImg"]').get_attribute('data-bid')  # 书ID
        book_name = driver.find_element_by_xpath(
            '//*[@id="bookImg"]').text  # 书名
        chapter_id = link.split('/')[-1]  # 章节ID
        chapter_name = driver.find_element_by_xpath(
            '//*[@id="chapter-' + chapter_id + '"]/div/div[1]/h3').text.strip()  # 章节名
        last_update_time = driver.find_element_by_xpath(
            '//*[@id="chapter-' + chapter_id + '"]/div/div[1]/div/div/i[2]/span').text  # 更新时间
        content_list = []  # 章节内容
        # print(len(driver.find_elements_by_xpath('//*[@id="chapter-' + chapter_id + '"]/div/div[2]/p')))
        for item in driver.find_elements_by_xpath('//*[@id="chapter-' + chapter_id + '"]/div/div[2]/p'):
            text = item.text.strip()  # 移除内容开头和结尾（默认为空格或换行符）或字符序列

            if text:
                # if re.match("注.+?推荐|注.+?收藏|^……$", text) is None:  # 如果内容里有 一些拉票的描述 则忽略点
                content_list.append(text)

        index.insertData(book_id, book_name.strip(), chapter_id, chapter_name.strip(
        ), content_list, last_update_time, 0, platform, link)
    finally:
        driver.quit()

    return result.success(content_list)
